PImage ico_bote;
PImage ico_red;
PImage ico_saque;
PImage ico_raqueta;
PImage ico_puntoA;
PImage ico_puntoB;

///////////////////////////////////////////////////////////////
void textoEnPantalla() {
  fill(0);
  textFont(fuente);
  text(">>"+path+"", 460, 56); 
  text("N puntos: "+partido.getNumPuntos(), 710, 56);
  text("Frame: "+videoLoader.getFrameNumber(), 880, 56);
  fill(255);
  int i=0;

// donde esta el raton
    String raton="";  
  raton="Posición Ratón Sobre Cancha: ( "+mouseX+" , "+mouseY+" )";
    text(raton, 30, 30);
  
  if (estadoAplicacion==1) {

    text("Point number:  "+ (partido.puntoEnEdicion+1) +" / "+(partido.getNumPuntos()), 480, 590); 
    //   text("     Golpe número "+golpeEnEdicion+"/"+ partido.puntos.get(0).trayectorias.get(0).golpes.get(0).size(),480,620);
    text("     Golpe número "+(partido.golpeEnEdicion+1)+"/" + partido.getGolpesPuntoEnEdicion(), 480, 620);
    text("        - Video Frame: " + partido.getFrameGolpeEnEdicion(), 480, 642);
    text("        - Posicion X: " + partido.getGolpeEnEdicionPos().x +"         ("+cxm(int(partido.getGolpeEnEdicionPos().x))+" meters )", 480, 662);//partido.puntos.get(puntoEnEdicion).golpes.get(0).pos.x
    text("        - Posicion Z: " + partido.getGolpeEnEdicionPos().z +"         ("+czm(int(partido.getGolpeEnEdicionPos().z))+" meters )", 480, 682);//partido.puntos.get(puntoEnEdicion).golpes.get(0).pos.z
    text("        - MetaInfo: ", 480, 702); //+partido.puntos.get(puntoEnEdicion).golpes.get(golpeEnEdicion).meta,480,702);
    if ((int(cGolpeTipo.selectedIndex())==0) || (int(cGolpeTipo.selectedIndex())==2)){
      cJugador.setVisible(true); 
    }else{
     cJugador.setVisible(false);
     //text(tJugador[partido.puntos.get(puntoEnEdicion).golpes.get(0).jugador],860,610); 
    }
  }
  if (estadoAplicacion==0) {
    text ("Video Lenght: "+"175000"+"       Number of segments: "+videoKeyFrames.numberOfKeyFrames()/2, 480, 590);

    text ("Actual segment Info:  "+(((videoKeyFrames.currentFrameSet+1)/2)+1)+" / "+videoKeyFrames.numberOfKeyFrames()/2, 480, 630);
    text ("Begin Frame: "+videoKeyFrames.listaFrames.get(videoKeyFrames.currentFrameSet)+"                 End Frame: "+videoKeyFrames.listaFrames.get(videoKeyFrames.currentFrameSet+1), 480, 670);

    if (videoKeyFrames.numberOfKeyFrames()>0) {
      keyFrameImg=keyIni;
      if (videoKeyFrames.numberOfKeyFrames()%2==0) {
        keyFrameImg=keyEnd;
      }
    }
    image(keyFrameImg, 900, 500);
  }
  if (estadoAplicacion==2) {
    ///DEBUG
//  println("Localización punto 0: "+curvaEnEdicion.x[0]+"  Localización punto V: "+curvaEnEdicion.x[1]+" Localización punto Fin: "+curvaEnEdicion.x[2]);
//  println("Altura punto 0: "+curvaEnEdicion.y[0]+"  Altura punto V: "+curvaEnEdicion.y[1]+" Altura punto Fin: "+curvaEnEdicion.y[2]);
   ///
   
    Golpe    actual = partido.getGolpe               (partido.puntoEnEdicion, partido.golpeEnEdicion);
    Trayectoria tr  = partido.getTrayectoriaByGolpe  (partido.puntoEnEdicion, actual);
    Trayectoria tr2 = partido.getTrayectoriaAnterior (partido.puntoEnEdicion, tr);
    text("        - Video Frame: " + partido.getFrameGolpeEnEdicion(), 480, 642);
    text(" Asociated player to this trayectory: "+partido.getJugador(partido.golpeEnEdicion));
    if (curvaEnEdicion.tr == null)
      curvaEnEdicion.setCurva(tr);
    
    if (tr!=null) {  
      if (!curvaEnEdicion.arrastrandoFlag){
        curvaEnEdicion.setCurva (tr);
        if (tr2 != null)
          curvaAnterior.setCurva  (tr2);
      }
      else{
        tr.puntoV = curvaEnEdicion.getPuntoV();
        println (tr.puntoV);
      }
    
      curvaAnterior.draw();
      curvaEnEdicion.draw();
      partido.pintaTrayectoriasPunto (partido.puntoEnEdicion, actual);
    }
    stroke(0); 
    fill(255); 
    text("P number:  "+ (partido.puntoEnEdicion+1) +" / "+(partido.getNumPuntos()), 480, 590); 
    text("     Shot number "+(partido.golpeEnEdicion+1)+"/" + partido.getGolpesPuntoEnEdicion(), 480, 620);

    // pinta la cancha
    strokeWeight(3);
    stroke (10,30,170);
    line(500, 720, 980, 720);
    stroke(10,200,10);
    line(530, 720, 945, 720);
    line(742, 720, 742, 703);
    //lineas de división informativas altura
    stroke(120,120,120);        
    strokeWeight(1);
    line(535, 703, 945, 703);
    line(535, 686, 945, 686);
    line(535, 669, 945, 669);
    line(535, 652, 945, 652);

  }
}

void setupKeyFrameIcons() {
  keyFrameImg = loadImage("data/botones/key_clear.png");
  keyClear = loadImage("data/botones/key_clear.png");
  keyIni = loadImage("data/botones/key_ini.png");
  keyEnd = loadImage("data/botones/key_fin.png"); 
}

void drawVideo() {
  videoLoader.updateVideo();
  if (videoLoader.play == true){
    partido.frameUpdate(videoLoader.getFrameNumber());
  }
  image (videoLoader.getFrame(), 460, 92, 540, 305);
}

int getTipoByString (String a) {
  for (int i=0; i < tGolpe.length; i++)
    if (tGolpe[i].equals(a))
      return i;  
  return -1;
}


String int2Frame(int frame) {
  
  int nFrame=frame;
  int cuanto=7;
  String salida="";
  while (nFrame>9 && cuanto>0) {
    nFrame=int(nFrame/10);
    cuanto=cuanto-1;
  }
  for (int i=0; i<cuanto; i++) {
    salida="0"+salida;
  }
  return salida+frame;
  
  //return nf (frame, 8);
}

void initGuiPunto() {

  ico_bote  = loadImage("bote.gif");
  ico_red = loadImage("red.gif");
  ico_raqueta = loadImage("raqueta.gif");
  ico_saque = loadImage("saque.gif");
  ico_puntoA = loadImage("puntoA.gif");
  ico_puntoB = loadImage("puntoB.gif"); 
}


int guiPunto() {
  int radio=22;
  int mRadio=16;
  Golpe g = golpes.get(golpes.size()-1); // el golpe donde lo centra;
  ellipseMode(CENTER);
  int distance;
  int mDistance=500;
  int indiceMenor=0;

  for (int i=0; i<6; i++) {
    int posX= int(g.pos.x+radio*cos(i*(PI/3)));
    int posY= int(g.pos.z+radio*sin(i*(PI/3)));
    //"Saque", "Suelo", "Raqueta", "Red", "Punto Dentro", "Punto Fuera"};
    switch (i) {
    case 0:
      image (ico_saque, posX-8, posY-8 );
      break;
    case 1:
      image (ico_bote, posX-8, posY-8 );  
      break;
    case 2:
      image (ico_raqueta, posX-8, posY-8 );  
      break;
    case 3:
      image (ico_red, posX-8, posY-8 );  
      break;  
    case 4:
      image (ico_puntoA, posX-8, posY-8 );  
      break;
    case 5:
      image (ico_puntoB, posX-8, posY-8 );  
      break;
    default:
      ellipse(posX, posY, mRadio, mRadio);
    }

    distance = int(distancia(posX, posY, mouseX, mouseY));
    if (distance<mDistance) {
      mDistance=distance;
      indiceMenor=i;
    }
  }

  fill(255, 0, 0, 80);

  noStroke();
  int posX= int(g.pos.x+radio*cos(indiceMenor*(PI/3)));
  int posY= int(g.pos.z+radio*sin(indiceMenor*(PI/3)));
  ellipse(posX, posY, mRadio, mRadio);
  stroke(0);
  return indiceMenor;
}
